package com.zoe.onelink.core.property.http;

import lombok.Data;

/**
 * <p>标题: </p>
 * <p>描述: </p>
 * <p>版权: Copyright (c) 2022</p>
 * <p>公司: 智业软件股份有限公司</p>
 *
 * @version: 1.0
 * @author: ruansheng
 * @date: 2022-08-26
 */
@Data
public class RestTemplateConfig {

    /**
     * 设置底层 URLConnection 的连接超时（以毫秒为单位）。 超时值为 0 指定无限超时。
     * 默认是系统的默认超时。
     */
    private int connectTimeout = -1;

    /**
     * 设置底层 URLConnection 的读取超时（以毫秒为单位）。 超时值为 0 指定无限超时。
     * 默认是系统的默认超时。
     */
    private int readTimeout = -1;

    /**
     * 设置不在本地缓冲请求正文时要写入每个块的字节数。
     * 注意这个参数只在bufferRequestBody设置为false ，并且Content-Length事先未知。
     */
    private int chunkSize = 4096;

    /**
     * 指示此请求工厂是否应在内部缓冲请求正文。
     * 默认为true 。 当通过 POST 或 PUT 发送大量数据时，建议将此属性更改为false ，以免内存不足。
     * 这将导致ClientHttpRequest直接流式传输到基础HttpURLConnection （如果Content-Length提前已知），或者将使用“分块传输编码”（如果Content-Length提前未知）。
     */
    private boolean bufferRequestBody = true;

    /**
     * 设置底层 URLConnection 是否可以设置为“输出流”模式。 默认为true 。
     * 启用输出流时，无法自动处理身份验证和重定向。
     * 如果禁用输出流，则永远不会调用底层连接的HttpURLConnection.setFixedLengthStreamingMode和HttpURLConnection.setChunkedStreamingMode方法。
     */
    private boolean outputStreaming = true;

}